package io;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

/**
 * 被Serializable接口声明的类的对象的属性都将被序列化， 但是如果想自定义序列化的内容的时候，就需要实现Externalizable接口。
 * 
 * 当一个类要使用Externalizable这个接口的时候，这个类中必须要有一个无参的构造函数， 如果没有的话，在构造的时候会产生异常，
 * 这是因为在反序列话的时候会默认调用无参的构造函数。
 * 
 * @author fusong
 * 
 */
public class Person2 implements Externalizable {
	private String name;
	private int age;

	public Person2() {

	}

	public Person2(String name, int age) {
		this.name = name;
		this.age = age;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "姓名：" + name + "  年龄：" + age;
	}

	public void writeExternal(ObjectOutput out) throws IOException {
		out.writeObject(this.name);
//		out.writeInt(age);
	}

	public void readExternal(ObjectInput in) throws IOException,
			ClassNotFoundException {
		this.name = (String) in.readObject();
//		this.age = in.readInt();
	}

}
